/**
 * @class Prototype.Recherche
 */ 
var Recherche = Class.create(AjaxClient,
{
  /**
   * initialize
   */
  initialize: function()
  {
    this.setServer('recherche.ajaxsrv.php');
    
    this.enableFindByDate(false);
    this.enableFindByMontant(false);
    this.enableFindByCompte(false);
  
    this.registerCallbacks();
  },
  
  /**
   * registerCallbacks
   */
  registerCallbacks: function()
  {
    Event.observe('check_date', 'click', function(event)
    {
      this.enableFindByDate($F('check_date') == 'on');
    }.bind(this));
  
    Event.observe('check_montant', 'click', function(event)
    {
      this.enableFindByMontant($F('check_montant') == 'on');
    }.bind(this));

    Event.observe('check_compte', 'click', function(event)
    {
      this.enableFindByCompte($F('check_compte') == 'on');
    }.bind(this));

    Event.observe('btn_dp_date_min', 'click', function(event)
    {
      displayDatePicker('input_date_min', true);
    }.bind(this));

    Event.observe('btn_dp_date_max', 'click', function(event)
    {
      displayDatePicker('input_date_max', true);
    }.bind(this));

    Event.observe('btn_find', 'click', function(event)
    {
      var params = { action      : 'find'
                   , by_date     : $F('check_date')
                   , by_montant  : $F('check_montant')
                   , by_compte   : $F('check_compte')
                   , date_min    : $F('input_date_min')
                   , date_max    : $F('input_date_max')
                   , montant_min : $F('input_montant_min')
                   , montant_max : $F('input_montant_max')
                   , compte      : $F('select_compte')
                   };
      this.ajaxUpdate('find_results', params);
      Event.stop(event);
    }.bind(this));
  },

  /**
   * enableFindByDate
   */     
  enableFindByDate : function(bEnable)
  {
    $('input_date_min','input_date_max','btn_dp_date_min','btn_dp_date_max').invoke(bEnable ? 'enable' : 'disable');
  },
  
  /**
   * enableFindByMontant
   */     
  enableFindByMontant : function(bEnable)
  {
    $('input_montant_min','input_montant_max','btn_dp_date_min','btn_dp_date_max').invoke(bEnable ? 'enable' : 'disable');
  },
  
  /**
   * enableFindByCompte
   */     
  enableFindByCompte : function(bEnable)
  {
    $('select_compte')[bEnable ? 'enable' : 'disable']();
  }
});

Event.observe(window, "load", function(event)
{
  window.Recherche = new Recherche();
});
